gate salgorithms